package com.lkl.hystrixdemo.order.utils;

import org.apache.commons.lang.StringUtils;

import java.util.HashMap;
import java.util.Map;

/**
 * 幂等性，生成令牌
 *
 */
public class MapTokenUtils {

    private static Map<String, String> tokenMap = new HashMap<>();

    /**
     * 获取token
     * synchronized 保证token的唯一性
     * 分布式的话，分布式全局ID
     * @return
     */
    public synchronized static String getToken () {
        String token = System.currentTimeMillis() + "_token";
        tokenMap.put(token, token);

        return token;
    }

    /**
     * 拿到token令牌之后，才能放行
     * @return
     */
    public synchronized static boolean  isAccess (String key) {
        if (StringUtils.isEmpty(key)) {
            System.out.println("请先获取 令牌");
            return false;
        }
        String token = tokenMap.get(key);

        if (StringUtils.isEmpty(token)) {
            System.out.println("该令牌不存在了");
            return false;
        }
        //删掉防止令牌重新被用
        tokenMap.remove(key);
        return true;
    }

}
